import os
import numpy as np
import pandas as pd  # 导入模块
from openpyxl import load_workbook  # 之前尝试用这个包读取现有的表格，然后再追加,费了时间但是没搞通

import pandas as pd

# 你的数据列表
data = [
    {'source': 'net', 'depart': '运维', 'ip': '10.1.10.22', 'item': 'is unavailable by ICMP', 'alarm_level': 5,
     'alarm_type': '灾难类|||||net|||||主机不通'},
    {'source': 'net', 'depart': '运维', 'ip': '10.1.10.22', 'item': '交换机cpu1-used no data', 'alarm_level': 4,
     'alarm_type': '定制类|net|||||no data|||||运维'},
    # ... 其他字典 ...
]

# 将数据列表转换为DataFrame
df = pd.DataFrame(data)

# 将DataFrame写入CSV文件
df.to_csv('alarms.csv', index=False, encoding='utf-8-sig')


def save_variable(filename, sheetname, variable):  # filename后面记得加上文件的后缀 .xls或者.xlsx
    # 重要的是写入函数对象的建立，即if else里的两种情况
    # 如果文件对象不存在，那么就使用默认的模式，即mode=‘w’，会创建一个新的文件
    if not os.path.exists(filename):
        writer = pd.ExcelWriter(filename, engine='openpyxl')
    else:  # 如果文件对象存在，那么就使用追加模式，设置if_sheet_exists='overlay'，此时需要设置mode=‘a’
        writer = pd.ExcelWriter(filename, engine='openpyxl', mode='a')

    # 后面是保存数据相关的代码了，
    pd_data = pd.DataFrame(variable)  # 将变量转换成df格式
    pd_data.to_excel(writer, sheet_name=sheetname, header=None, index=None)  # 不要索引、不要表头
    writer.save()
    writer.close()


if __name__ == '__main__':
    # 测试同一个工作表进行重写
    a1 = np.array([1, 1, 1])
    a2 = np.array([2, 2, 2])
    filename = './test1.xlsx'  # 当前文件夹下建立文件  后缀xlsx或者xls均可，具体区别：不知道。
    save_variable(filename, '1', a1)
    save_variable(filename, '1', a2)  # 对于只有一行的数组，写进去的是一列，有空再摸索....

    # 测试添加新表到现有的excel文件之中
    b = np.array([[1, 2, 1], [1, 3, 6]])
    save_variable(filename, '1', b)
